/**
 * @author luoqingbo
 * @create 2024/5/9 9:46
 */
public class Leetcode2105 {
    //    输入：plants = [2,2,3,3], capacityA = 5, capacityB = 5
//    输出：1
//    解释：
//            - 最初，Alice 和 Bob 的水罐中各有 5 单元水。
//            - Alice 给植物 0 浇水，Bob 给植物 3 浇水。
//            - Alice 和 Bob 现在分别剩下 3 单元和 2 单元水。
//            - Alice 有足够的水给植物 1 ，所以她直接浇水。Bob 的水不够给植物 2 ，所以他先重新装满水，再浇水。
//    所以，两人浇灌所有植物过程中重新灌满水罐的次数 = 0 + 0 + 1 + 0 = 1 。
    public static void main(String[] args) {
        int[] plants = {5};
        int capacityA = 10;
        int capacityB =8;
        System.out.println(minimumRefill(plants, capacityA, capacityB));
    }

    public static int minimumRefill(int[] plants, int capacityA, int capacityB) {
        int ans = 0;
        int left = 0;
        int right = plants.length - 1;
        int tempCapacityA = capacityA;
        int tempCapacityB = capacityB;
        while (left <= right) {
            if (left < right) {
                if (tempCapacityA < plants[left]) {
                    ans++;
                    tempCapacityA = (capacityA - plants[left++]);
                } else {
                    tempCapacityA -= plants[left++];
                }
                if (tempCapacityB < plants[right]) {
                    ans++;
                    tempCapacityB = (capacityB - plants[right--]);
                } else {
                    tempCapacityB -= plants[right--];
                }
            } else {
                if (plants[left] > Math.max(tempCapacityA, tempCapacityB)) {
                    ans++;
                }
                break;
            }
        }
        return ans;
    }
}
